/*
背景：
中国有句老话，"三天打鱼两天晒网”。假设渔民老张从1990年1月1日开始"三天打鱼两天晒网”，那么请你帮助推算出在以后某一天中，老张是在"打鱼”，还是在"晒网”。

输入：
第一行是测试的组数。以后每一行是一组要测试的时间，有三个数据，分为表示为年、月、日。

输出：
根据输入的日期，打印出相应的情况（打鱼还是晒网），具体格式见测试用例。
*/

/*
测试用例1:
输入：
3
1991 10 25
1992 10 25
1993 10 25
输出：
He was fishing on 1991.10.25↵
He was basking on 1992.10.25↵
He was basking on 1993.10.25↵

测试用例2:
输入：
4
2000 10 10
2000 01 01
1996 2 29
1996 2 28
输出：
He was fishing on 2000.10.10↵
He was fishing on 2000.1.1↵
He was fishing on 1996.2.29↵
He was basking on 1996.2.28↵
*/

#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {
	
	// 测试用例数
	int N;
	cin >> N;
	
	// 存储测试用例
	vector<int> years(N), months(N), days(N);
	
	// 接收用户输入
	for (int i=0; i<N; i++)
	{
		int year, month, day;
		cin >> year >> month >> day;
		years[i] = year;
		months[i] = month;
		days[i] = day;
	}
	
	// 输出
	for (int i=0; i<N; i++)
	{
		// 计算当前日期距离1990.1.1的天数
		int days_apart = 0;
		
		// 年
		for (int year_num=1990; year_num<years[i]; year_num++)
		{
			// 判断平年、润年
			if ((year_num%4==0 && year_num%100!=0) || year_num%400==0)
			{
				days_apart += 366;
			}
			else 
			{
				days_apart += 365;
			}
		}
		
		// 月
		for (int month_num=1; month_num<months[i]; month_num++)
		{
			switch (month_num) {
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
				case 12:
					days_apart += 31;
					break;
				
				case 2:
					// 判断平年、润年
					if ((years[i]%4==0 && years[i]%100!=0) || years[i]%400==0)
						days_apart += 29;
					else
						days_apart += 28;
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					days_apart += 30;
					break;
			}
		}
		
		// 日
		days_apart += days[i] - 1;
		
		// 判断打鱼还是晒网
		if (days_apart % 5 < 3)
			printf("He was fishing on %d.%d.%d\n", years[i], months[i], days[i]);
		else
			printf("He was basking on %d.%d.%d\n", years[i], months[i], days[i]);;
	}
}